package com.bjc.base.core;

import java.util.List;

/**
 * Service基类
 * 
 * @author 许自辉
 * @date 2017年7月21日 下午2:21:15
 * @param T
 *            VO请求类型
 * @param T2
 *            VO返回类型
 */
public interface IBaseService<T, T2> {
	/**
	 * 根据id获取对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param id
	 *            主键
	 * @return 返回的对象
	 */
	T2 getById(int id);

	/**
	 * 很据vo对象条件获取对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param record
	 *            vo对象条件
	 * @return 查询的对象
	 */
	T2 get(T record);

	/**
	 * 获取List对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param record
	 *            vo对象条件
	 * @return 查询的对象集合
	 */
	List<T2> getList(T record);

	/**
	 * 根据id删除对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param id
	 *            主键id
	 * @return 查询的对象
	 */
	int deleteById(int id);

	/**
	 * 批量删除对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param ids
	 *            主键id数组
	 * @return
	 */
	int deleteList(int[] ids);

	/**
	 * 批量删除对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param ids
	 *            主键id字符串
	 * @return
	 */
	int deleteList(String ids);

	/**
	 * 插入对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param record
	 *            插入的对象
	 * @return 成功的条数
	 */
	int insert(T record);

	/**
	 * 插入对象List
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param records
	 *            插入的对象
	 * @return 成功的条数
	 */
	int insertList(List<T> records);

	/**
	 * 更新对象
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param record
	 *            更新的对象
	 * @return 成功的条数
	 */
	int update(T record);

	/**
	 * 更新对象List
	 *
	 * @author 许自辉
	 * @date 2017年7月21日
	 * @param records
	 *            更新的对象List
	 * @return 成功的条数
	 */
	int updateList(List<T> records);

}
